<style>
  :host {
    align-items: center;
    display: flex;
    touch-action: none;
  }

  input {
    display: none;
  }

  label {
    box-sizing: border-box;
    cursor: pointer;
    flex: 1;
  }

  cr-toggle {
    display: inline-block;
  }

  :host ::slotted(*) {
    flex: 1;
    margin-inline-end: 20px;
  }

  :host(.fade) {
     -moz-transition: background-color 1s cubic-bezier(1,1,1,1);
     -moz-transition: color 0.5s cubic-bezier(1,1,1,1);
     -moz-transition-delay: 0s;
     -ms-transition: background-color 1s cubic-bezier(1,1,1,1);
     -ms-transition: color 0.5s cubic-bezier(1,1,1,1);
     -ms-transition-delay: 0s;
     -o-transition: background-color 1s cubic-bezier(1,1,1,1);
     -o-transition: color 0.5s cubic-bezier(1,1,1,1);
     -o-transition-delay: 0s;
     -webkit-transition: background-color 1s cubic-bezier(1,1,1,1);
     -webkit-transition: color 0.5s cubic-bezier(1,1,1,1);
     -webkit-transition-delay: 0s;
     transition: background-color 1s cubic-bezier(1,1,1,1);
     transition: color 0.5s cubic-bezier(1,1,1,1);
     transition-delay: 0s;
  }

  :host(.fadeIn) {
     background-color: #1E90FF;
     color: #fff;
  }
</style>
<label id="label" aria-hidden="true">
  <input id="native" type="checkbox" checked="[[checked]]"
      on-change="onNativeChange_" on-click="onNativeClick_"
      disabled="[[disabled]]">
  <slot></slot>
</label>
<cr-toggle id="crToggle" checked="{{checked}}" aria-labelledby="label"
    on-change="onCrToggleChange_" disabled="[[disabled]]"></cr-toggle>
